/*
 * statistics.h Contiene informazioni statistiche sull'andamento dell'algoritmo. Esse nascono principalmente per essere graficate
 * 				con l'ausilio di Matlab, ma valori scalari come massimi minimi e medi possono benissimo essere stampati a stdout.
 *
 * 				I dati sono qui aggregati al massimo livello, ovvero descrivono sè stessi nel modo più esteso possibile.
 * 				E.g. si conserva un vettore di storici della funzione obiettivo, poichè ognuno di essi è legato a una singola
 * 				iterazione del livello LTM e possono avvenire più di una di queste, per la diversificazione richiesta.
 *
 * 				Spetterà a metodi di estrazione dei dati effettuare filtri, selezioni, medie su tutto ciò che è stato raccolto.
 * 				Si ragioni in una logica stocastica :-)
 *
 *  Created on: May 6, 2013
 *      Author: patrizio
 */

#ifndef STATISTICS_H_
#define STATISTICS_H_

typedef struct Statistics {

	/** Numero totale di iterazioni avvenute del livello LTM. Maggiore o uguale di 1. */
	int ItotLTM;

	/** Numeri totali di iterazioni avvenute del livello STM, per ogni iterazione di LTM.
	 *  Maggiore o uguale di vettore di uni. */
	int* ItotSTM;
	/** Numeri totali di iterazioni avvenute del livello STM rispetto agli ultimi relativi miglioramenti,
	 *  per ogni iterazione di LTM*. Maggiore o uguale di vettore di zeri. */
	int* IlastSTM;

	/* ItotLTM storici della funzione obiettivo, ognuno composto dal relativo ItotSTM[i] numero di punti. */
	int** objFunctionHistory;

} Statistics;

typedef Statistics* Pstatistics;

#endif /* STATISTICS_H_ */
